/*
 *  NFCSigning - Open source library for signing/validation of NDEF messages
 *  Copyright (C) 2009-2010 The NFCSigning Team
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 *
 */
package org.nfcsigning;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Hashtable;

/**
 *
 * @author Markus Kilås
 */
public class TestData {
    
    /** 
     * SmartPoster containing URL and Sig using ECDSA.
     * Created using SampleAppAMidlet 0.2-alpha
     * 
     *  URI: http://www.ericsson.com
     *  Certificate: Mora-Nisse (3) (ECDSA)
     *  Certificate chain present: Yes
     *  Signature algorithm: ECDSA
     *  Signature present: Yes
     * 
     * 1883 bytes 
     *
     */
    public static final String msgSpUrlMoraNisseChainSigECDSA = "files/msgSpUrlMoraNisseChainSigECDSA.dat";
    
    /** 
     * SmartPoster containing URL and Sig using DSA.
     * Created using SampleAppAMidlet 0.3-alpha
     * 
     *  URI: http://www.dsa.se
     *  Certificate: Lars-Nils (4) (DSA)
     *  Certificate chain present: Yes
     *  Signature algorithm: DSA
     *  Signature present: Yes
     * 
     * 3073 bytes 
     */
    public static final String msgSpUrlLarsNilsChainSigDSA = "files/msgSpUrlLarsNilsChainSigDSA.dat";
    
    
    
    /** 
     * SmartPoster containing URL and Sig using RSASSA-PKCS1.
     * Created using SampleAppAMidlet rev 197~ TODO: recreate this
     * 
     *  URI: http://www.ericsson.com
     *  Certificate: A User1 (2) (RSA)
     *  Certificate chain present: Yes
     *  Signature algorithm: RSASSA-PKCS1
     *  Signature present: Yes
     * 
     * 652 bytes 
     */
    public static final String msgSpUrlAUser1 = "files/msgSpUrlAUser1.dat";

    /** 
     * SmartPoster containing URL and Sig using DSA.
     * Created using SampleAppAMidlet rev 197~ TODO: recreate this
     * 
     *  URI: http://www.ericsson.com
     *  Certificate: D User2 (2) (DSA)
     *  Certificate chain present: Yes
     *  Signature algorithm: DSA
     *  Signature present: Yes
     * 
     * 471 bytes 
     */
    public static final String msgSpUrlDUser2 = "files/msgSpUrlDUser2.dat";

    private Hashtable data = new Hashtable();
    
    byte[] getBytes(String dataFile) {
        
        byte[] bytes = (byte[])data.get(dataFile);
        
        if(bytes == null) {
            bytes = readBinaryFile(dataFile);
            data.put(dataFile, bytes);
        }
        
        return bytes;
    }
    
    private byte[] readBinaryFile(String fileName) {
        try {

            
            InputStream in = getClass().getResourceAsStream(fileName);
            
            if(in == null) {
                throw new RuntimeException("No such file: " + fileName); // Note: Do not obfuscate this class!
            }
            
            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);

            byte[] buffer = new byte[512];

            int ch;
            while ((ch = in.read(buffer)) > 0) {
                out.write(buffer, 0, ch);
            }
            in.close();

            return out.toByteArray();
        } catch (IOException ex) {
            ex.printStackTrace();
            throw new RuntimeException("IOException: " + ex.getMessage());
        }
    }
    
}
